使用Java对文件进行加密前端JavaScript对文件解密

您所在的位置:网站首页 js rsa加密 java解密 使用Java对文件进行加密前端JavaScript对文件解密

使用Java对文件进行加密前端JavaScript对文件解密

2023-03-20 16:33| 来源: 网络整理| 查看: 265

在现代Web应用程序中,文件安全是至关重要的。很多时候,我们需要对敏感数据和文件进行加密以保护其安全性,尤其是在数据传输过程中。Java文件加密和前端文件解密是一种广泛使用的技术,它可以通过对文件进行加密和解密来保护文件安全性。 Java文件加密技术

Java文件加密技术通常涉及使用密钥对文件进行加密。常见的Java文件加密算法包括AES、DES、RSA等。下面是使用AES算法对Java文件进行加密的步骤:

1.初始化AES加密密钥。

2.使用密钥初始化加密器。

3.使用加密器将文件读入内存并加密。

4.将加密后的文件写入磁盘。

下面是一个简单的Java代码示例,使用AES算法对文件进行加密:

package com.ruoyi; import org.springframework.util.StringUtils; import javax.crypto.Cipher; import javax.crypto.spec.SecretKeySpec; import java.io.*; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.util.Base64; public class CryptoUtils { //这个密钥需要是16位 public static final String KEY_DES = "aaaaaaaabbbbbbbb"; public static void main(String[] args) throws Exception {         String old = "12345678"; String target ="hy+A8P/oEYPdOpwfRVpgwg=="; // 加密后的字符串 //解密 System.out.println(CryptoUtils.aesDecryptForFront(target, CryptoUtils.KEY_DES)); //加密 System.out.println(CryptoUtils.aesEncryptForFront(old, CryptoUtils.KEY_DES)); File file = new File("C:\\111.txt"); // 以 byte 的形式读取,不改变文件数据的编码格式 byte[] bytes = Files.readAllBytes(file.toPath()); byte[] outFile = CryptoUtils.aesEncryptForFront(bytes, CryptoUtils.KEY_DES); OutputStream out = new BufferedOutputStream(new FileOutputStream("C:\\model1.zm")); out.write(outFile);                 // 这里生成加密后的文件后缀可以自定义 File file = new File("C:\\\\model.zm"); // 以 byte 的形式读取,不改变文件数据的编码格式 byte[] bytes = Files.readAllBytes(file.toPath()); byte[] outFile = CryptoUtils.aesDecryptForFront(bytes, CryptoUtils.KEY_DES); OutputStream out = new BufferedOutputStream(new FileOutputStream("C:\\model2.glb")); out.write(outFile); } /** * AES解密 * @param encryptStr 密文 * @param decryptKey 秘钥,必须为16个字符组成 * @return 明文 * @throws Exception */ public static String aesDecryptForFront(String encryptStr, String decryptKey) { if (StringUtils.isEmpty(encryptStr) || StringUtils.isEmpty(decryptKey)) { return null; } try { byte[] encryptByte = Base64.getDecoder().decode(encryptStr); Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding"); cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec(decryptKey.getBytes(), "AES")); byte[] decryptBytes = cipher.doFinal(encryptByte); return new String(decryptBytes); } catch (Exception var3) { var3.printStackTrace(); return null; } }     // AES解密文件 public static byte[] aesDecryptForFront(byte[] bytes, String decryptKey) { if (StringUtils.isEmpty(bytes) || StringUtils.isEmpty(decryptKey)) { return null; } try { Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding"); cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec(decryptKey.getBytes(), "AES")); return cipher.doFinal(bytes); } catch (Exception var3) { var3.printStackTrace(); return null; } } /** * AES加密文本 * @param content 明文 * @param encryptKey 秘钥,必须为16个字符组成 * @return 密文 * @throws Exception */ public static String aesEncryptForFront(String content, String encryptKey) { if (StringUtils.isEmpty(content) || StringUtils.isEmpty(encryptKey)) { return null; } try { Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding"); cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(encryptKey.getBytes(), "AES")); byte[] encryptStr = cipher.doFinal(content.getBytes(StandardCharsets.UTF_8)); return Base64.getEncoder().encodeToString(encryptStr); } catch (Exception var3) { var3.printStackTrace(); return null; } }     // AES加密文件 public static byte[] aesEncryptForFront(byte[] bytes, String encryptKey) { if (StringUtils.isEmpty(bytes) || StringUtils.isEmpty(encryptKey)) { return null; } try { Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding"); cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(encryptKey.getBytes(), "AES")); byte[] encryptStr = cipher.doFinal(bytes); return encryptStr; } catch (Exception var3) { var3.printStackTrace(); return null; } } } Java文件加密技术

前端解密使用的是CryptoJS库,CryptoJS是一个JavaScript加密库,可以提供诸如AES、DES、SHA1等常见的加密算法。使用CryptoJS解密前端加密文件时,需要了解密钥和加密模式,以确保成功解密文件。

我们使用FileReader对象将文件读入内存,并在onload回调函数中使用CryptoJS解密文件内容。最后,我们将解密后的字符串输出到控制台中。

下面是一个简单的JavaScript代码示例,使用CryptoJS解密:

function init() {     // 解密字符串 const decPwd = myDecrypt("hy+A8P/oEYPdOpwfRVpgwg==", "aaaaaaaabbbbbbbb"); console.log(decPwd);     fetch('assets/models/model.zm', {     responseType: 'arraybuffer'     })     .then(response => response.arrayBuffer())     .then(data => {     // console.log(data)     let decPwd = myDecryptFile(data, "aaaaaaaabbbbbbbb");     console.log(decPwd)     })     .catch(error => console.log(error)); let loader1 = new THREE.FileLoader(); // 加载一个文本文件,并把结果输出到控制台上 loader1.load('assets/models/model1.zm', function(data) { console.log(data) const decPwd = myDecryptFile(data, "aaaaaaaabbbbbbbb"); console.log(decPwd) });     var fileReader = new FileReader();     fileReader.onload = function(e) {     var encrypted = e.target.result;     var decrypted = CryptoJS.AES.decrypt(encrypted, passphrase);     var plaintext = decrypted.toString(CryptoJS.enc.Utf8);     console.log(plaintext);     };     fileReader.readAsText(fileInput.files[0]); } //解密方法 function myDecrypt(word, key) { var secretKey = CryptoJS.enc.Utf8.parse(key); var decrypt = CryptoJS.AES.decrypt(word, secretKey, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 }); return CryptoJS.enc.Utf8.stringify(decrypt).toString(); } function myDecryptFile(word, key) { // console.log(word) var secretKey = CryptoJS.enc.Utf8.parse(key); var decrypt = CryptoJS.AES.decrypt(word, secretKey, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 }); // console.log(decrypt) // console.log(CryptoJS.enc.Utf8.stringify(decrypt)) return CryptoJS.enc.Utf8.stringify(decrypt).toString(); }


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3